package com.ocom.xfrecode.service;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ocom.common.entity.card.EntityXfRecord;
import com.ocom.common.request.web.*;
import com.ocom.common.request.xfrecde.*;
import com.ocom.common.resp.Result;
import com.ocom.common.vo.recode.ConRecCountVo;
import com.ocom.common.vo.xfrecode.GetPointMealPreVo;
import com.ocom.common.vo.xfrecode.GetPointMealSendVo;
import com.ocom.common.vo.xfrecode.OrderedMealBVo;

import java.util.Date;
import java.util.List;

public interface XfRecordService extends IService<EntityXfRecord> {
    Boolean sveXfRecord(EntityXfRecord entityXfRecord);

    Boolean deleteXfRecord(EntityXfRecord entityXfRecord);

    Boolean updateXfRecord(EntityXfRecord entityXfRecord);

    Boolean updateFace(EntityXfRecord entityXfRecord);

    Page<EntityXfRecord> webSelectDetails(JSONObject jsonObject);

    List<EntityXfRecord> getConsumeReports(JSONObject jsonObject);
    List<EntityXfRecord> getConsumeReportsC(JSONObject jsonObject);

    public List<EntityXfRecord> getConsumeReports10(JSONObject jsonObject);
    public List<EntityXfRecord> getConsumeReports10C(JSONObject jsonObject);

    EntityXfRecord getxfUserparam(EntityXfRecord entityXfRecord);

    EntityXfRecord getxfUserparamDiscount(EntityXfRecord entityXfRecord);

    EntityXfRecord getTimes(EntityXfRecord entityXfRecord);

    List<EntityXfRecord> dayTotalMealNo(JSONObject jsonObject);

    List<EntityXfRecord> dayTotalMealNoXM(JSONObject jsonObject);

    List<EntityXfRecord> dayTotalPayType(JSONObject jsonObject);

    List<EntityXfRecord> dayTotalPayTypeXM(JSONObject jsonObject);

    List<EntityXfRecord> dayTotalAccount(JSONObject jsonObject);

    List<EntityXfRecord> dayTotalAccountXM(JSONObject jsonObject);

    List<EntityXfRecord> monthTotalMealNo(JSONObject jsonObject, String start, String end);

    List<EntityXfRecord> monthTotalPayType(JSONObject jsonObject, String start, String end);

    List<EntityXfRecord> monthTotalAccount(JSONObject jsonObject, String start, String end);

    List<EntityXfRecord> dayTotalMealNoCanteenNo(JSONObject jsonObject);

    List<EntityXfRecord> monthMealNoCanteenNo(JSONObject jsonObject, String start, String end);

    List<EntityXfRecord> walletBalance(Long comId, String month,Integer types,Integer subAccount);

    List<EntityXfRecord> walletBalanceFirstDate(Long comId, Date yesterdayD, Date firstDateD, String month,Integer types,Integer subAccount);

    List<EntityXfRecord> subsidyDaily(Long comId, String endDate, boolean isLastDayOfMonth,Integer subAccount)throws Exception;

    List<EntityXfRecord> rechargeDaily(Long comId, String endDate, boolean isLastDayOfMonth,Integer subAccount) throws Exception;

    List<EntityXfRecord> cashMonthly(Long comId, String endDate, boolean isLastDayOfMonth,Integer subAccount,String merchIds)throws Exception;

    List<EntityXfRecord> cashDaily(CashDailyRequest cashDailyRequest, boolean isLastDayOfMonth) throws Exception;

    List<EntityXfRecord> merchMonthly(Long comId, String endDate, boolean isLastDayOfMonth,Integer subAccount,String merchIds) throws Exception;

    List<EntityXfRecord> merchDaily(Long comId, String endDate, boolean isLastDayOfMonth, Integer merchId,Integer subAccount) throws Exception;

    Page<EntityXfRecord> getConsPerReports(GetConsPerReportsRequest getConsPerReportsRequest) throws Exception;

    List<EntityXfRecord> getConsDeptReports(GetConsDeptReportsRequest getConsDeptReportsRequest) throws Exception;

    List<EntityXfRecord> getAccDiscountReports(AccDiscountReportsOnShowRequest request) throws Exception;

    List<EntityXfRecord> getConsMerchReports(Long comId, String startTime, String endTime, String merchIds) throws Exception;

    EntityXfRecord getPointIdByNameFromRecord(JSONObject jsonObject) throws Exception;

    EntityXfRecord getEntityXfRecord(String orderNo, String monthValue);

    List<ConRecCountVo> getXfCountByComId(Long beginComId, Long endComId , String month);

    Integer  getXfCount(Long beginComId, Long endComId ,String month);


    Result getXfCount(Long comId, String beginMonth, String endMonth);


    Result  getXfCount(Long beginComId, Long endComId,String beginMonth, String endMonth);


    Result  getChannelData(Long comId,String payChannelNo, String startTime ,String endTime);

    Result  getGroupData(GetGroupDataRequest request);

    Boolean updateOrderVerification(XfOrderVerificationRequest request);

    Result getXfPayDate(Long comId,String month);


    List<GetPointMealPreVo> getPointMealPre(GetPointMealPreReportsRequest request) ;

    List<GetPointMealSendVo> getPointMealSend(GetPointMealSendReportsRequest request) ;


    List<EntityXfRecord>  getTimesManJian(EntityXfRecord entityXfRecord);

    EntityXfRecord getOneRecode(EntityXfRecord xfRecord);

    List<OrderedMealBVo> getUserOrderedB(GetUserOrderedB request);

    Result getConsPerByMealTimes(GetConsPerByMealTimesReq request);
    Result getConsDeptByMealTimes(GetConsDeptByMealTimesReq request);


}
